home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / l2r.lha / l2r / StringBuf.c < prev    next >
Text File  |  1992-08-20  |  1KB  |  53 lines

  1. # include "StringBuf.h"
  2. # include "DynArray.h"
  3.  
  4. # define InitialMemorySize    1024 * 16
  5.  
  6. static    char *    MemoryPtr;
  7. static    unsigned long    MemorySize;
  8. static    long    MemorySpaceLeft;
  9. static    long    MemoryFreePtr;
  10.  
  11. void BufString (string)
  12.    tString    string;
  13.    {
  14.       register    tString    stringReg1;
  15.       register    tString    stringReg2    = string;
  16.       register    cardinal lengthReg    = 0;
  17.       register    long    NeededSpace;
  18.  
  19.       while (string[lengthReg++]);
  20.       NeededSpace = lengthReg;
  21.       while (MemorySpaceLeft < NeededSpace) {
  22.      long    OldMemorySize = MemorySize;
  23.  
  24.      ExtendArray ((char * *) & MemoryPtr, & MemorySize, sizeof (char));
  25.      MemorySpaceLeft += MemorySize - OldMemorySize;
  26.       };
  27.       stringReg1 = & MemoryPtr [MemoryFreePtr];
  28.       while (lengthReg -- > 0) {
  29.      * stringReg1 ++ = * stringReg2 ++;
  30.       };
  31.       MemorySpaceLeft -= NeededSpace;
  32.       MemoryFreePtr   += NeededSpace;
  33.    };
  34.  
  35.  
  36. void WriteStringBuffer ()
  37.    {
  38.       long    StringPtr = 0;
  39.  
  40.       while (StringPtr < MemoryFreePtr) {
  41.      (void) printf ("%s", &MemoryPtr[StringPtr]);
  42.      while (MemoryPtr[StringPtr++]);
  43.       };
  44.    };
  45.  
  46. void InitStringBuffer ()
  47.    {
  48.       MemorySize    = InitialMemorySize;
  49.       MakeArray ((char * *) & MemoryPtr, & MemorySize, sizeof (char));
  50.       MemorySpaceLeft    = MemorySize;
  51.       MemoryFreePtr     = 0;
  52.    };
  53.